$ £ ¥
¥ £ $

قالب اكسبيرت MT5

المحتويات

يكتشف المتداول عادةً في مرحلة من مراحل حياته المهنية أنه من الأصوب أتمتة المهام التي يقوم بها. هنا يأتي دور المستشارين الخبراء أو الاكسبيرتات.

هناك مزايا معينة يتفوق بها التداول الآلي على التداول اليدوي.

  • لا حاجة لمتابعة الرسوم البيانية بشكل مستمر.
  • تجنب تأثير العواطف والانفعالات.
  • التداول على مدار 24 ساعة طوال اليوم.
  • تجنب الأخطاء العرضية (بشرط أن يتم الترميز بشكل صحيح).
  • القدرة على التداول بعدة استراتيجيات في وقت واحد.

برغم ذلك، فإن برمجة روبوت التداول (المستشار الخبير) ليس دائمًا بالأمر السهل حتى مع الاستراتيجيات البسيطة. وتزداد الصعوبة بشكل كبير عند بناء أنظمة التداول المعقدة. ستحتاج إلى صياغة كل شيء بوضوح ليسهل تطبيق الشروط والتعليمات المستهدفة، كما سيتعين عليك التفكير في كيفية التعامل مع الحالات الثانوية لتغطية جميع المواقف المحتملة.

وعلى أية حال، إذا كان هدفك هو برمجة روبوتك الخاص، فربما يتعين عليك بدء الرحلة ببعض المهام الأساسية.

يمكن أن يكون MT5 Expert Advisor Template المعروض هنا نقطة بداية جيدة لصقل مهاراتك في تطوير روبوتات التداول.

يغطي الاكسبيرت سير العمل الأساسي ووظائف تداول المستشار الخبير بدون تطبيق أي إشارات دخول أو خروج محددة. من السهل بعد ذلك إضافة إشارات الدخول والخروج وفق استراتيجيتك.

سيقلل كود المصدر الوقت الذي تقضيه في تطوير المستشار الخبير بشكل كبير.

قالب قالب اكسبيرت MT5


ما هو قالب قالب اكسبيرت MT5

قالب اكسبيرت MT5 هو عبارة عن قالب يضم أكثر من 700 سطر من كود المصدر (مرفق به التعليقات) الذي يمكن استخدامه في بناء مستشارك الخبير.

قد يبدو للوهلة الأولى أنه يتضمن عدد كبير من التعليمات البرمجية بالنسبة لقالب أساسي، ولكن لا يشكل ذلك أي صعوبة، كما أن معظم هذه الأسطر هي عبارة عن تعليقات لمساعدتك على فهم منطق الأكواد بشكل أفضل.

يمكنك تخصيص أجزاء محددة من الأكواد لتطبيق استراتيجية الدخول والخروج وتجهيز مستشارك الخبير.


ما الذي يتضمنه قالب قالب اكسبيرت MT5

  • تعليقات لكل دالة لفهم المنطق ورائها
  • تعليمات برمجية دقيقة
  • هيكل معياري
  • إدارة المخاطرة من خلال حساب تلقائي لحجم المركز
  • اختيار مستوى ثابت أو تلقائي لإيقاف الخسارة
  • اختيار مستوى ثابت أو تلقائي لأخذ الربح
  • تصفية ساعات التداول
  • الإغلاق الجزئي
  • معامل الاختبار المخصص

معلمات إدخال قالب روبوت MT5


ما الذي لا يتضمنه قالب اكسبيرت MT5

لا يعتبر قالب اكسبيرت MT5 استراتيجية متكاملة للتداول الآلي.

لذا من الضروري إضافة أكواد لإشارات الدخول والخروج إلى القالب كي يتسنى له إجراء الصفقات.


لماذا نستخدم قالب اكسبيرت MT5

  • توفير الوقت —يمكنك توفير قضاء ساعات عديدة في التعلم والتكويد بفضل هذه الوظائف الجاهزة.
  • معالجة الأخطاء — يفحص القالب الأخطاء الشائعة في جميع الدوال أثناء التشغيل.
  • إدارة المخاطر — الاختيار بين تحديد حجم المركز سواء في شكل قيمة ثابتة أو قيمة معتمدة على المخاطرة بهدف إتاحة المرونة في إدارة المخاطر.
  • سهولة التحرير — يمكنك إضافة أو تعديل عدة أسطر فقط في التعليمات البرمجية وبعدها سيُصبح لديك اكسبيرت جاهز للعمل بناءً على مؤشراتك الخاصة.

ما هو منطق الاكسبيرت

منطق قالب اكسبيرت MT5

ينقسم هذا الاكسبيرت الأساسي إلى ثلاثة دوال رئيسية:

  1. OnInit() هي المختصة بتهيئة المستشار الخبير. وهي أول دالة يتم تنفيذها عند تحميل الاكسبيرت على الرسم البياني. يعمل مرة واحدة.
  2. OnTick() تعمل كل مرة تتلقى فيها MT5 عرض سعر جديد للأداة المالية الحالية.
  3. OnDeinit() تُنفذ مرة واحدة بعد حذف الاكسبيرت من الرسم البياني.

الوحدات التي يتم تضمينها في قالب اكسبيرت MT5

تمت كتابة MT5 Expert Advisor Template بطريقة معيارية بحيث تفصِل كل عملية بشكل منطقي عن باقي العمليات في الدوال المستقلة. يُسهل ذلك من قراءة وفهم كود المصدر كما يجعل من تخصيص العمليات البرمجية أكثر سهولة.

يمكنك أن ترى هنا كيفية فصل الدوال وفق تدفق وقت التشغيل:

دالة OnInit

 دالة تهيئة قالب المستشار الخبير MT5

دالة OnTick

دالة كل مزايدة في قالب اكسبيرت MT5

لا يوجد شيء في دالة DeInit في قالب هذا الاكسبيرت  — مجرد عنصر نائب (placeholder) حتى يُمكنك إضافة أكوادك الخاصة هنا بسهولة، ولكن لن تحتاج على الأرجح إلى إضافة أي شيء هناك.


متطلبات البدء في استخدام قالب اكسبيرت MT5

يعتبر MT5 Expert Advisor Template أداة رائعة عندما تستخدمه بطريقة صحيحة، ولكنه قد لا يكون مناسبًا للجميع. فكر في استخدام هذا القالب للمستشارين الخبراء إذا كنت تستوفي الشروط التالية.

معرفة أساسية ببرمجة MQL5

برغم إتاحة معظم التعليمات البرمجية والتعليق عليها بشكل واضح، إلا أنك ستظل بحاجة إلى إضافة أكوادك الخاصة لإشارات الدخول والخروج، وأيضًا أي أكواد مطلوبة لمزيد من التخصيص (مثل إيقاف الخسارة المتحرك على سبيل المثال).

قد يساعدك النظر على التعليمات البرمجية في كود المصدر للمستشارين الخبراء الآخرين في تلك المهمة.

منصة MT5

ملفات المستشار الخبير التي تقوم بتنزيلها مخصصة لمنصة الميتاتريدر5، أي أنها لن تعمل في الميتاتريدر4.

فهم كيفية التجميع

من المستحسن أن تكون على دراية بعملية تجميع الأكواد. هذا القالب هو في جوهره كود مصدر يتعين تحريره في MetaEditor ثم تجميعه ليعمل كمستشار خبير.

الاستعداد للتجربة

يجب ملاحظة أننا لا نتحدث عن استراتيجية تداول متكاملة. سيتعين عليك استخلاص إشارات الدخول والخروج ووضع الاستراتيجية بنفسك. لذا قد تحتاج إلى إجراء عدة اختبارات خلفية (باك تيست) وتغيير الكود عدة مرات قبل أن تتوصل إلى شيء يستحق العناء.

من كود المصدر

يمكنك أن ترى هنا بعض مقتطفات من الكود، وتلك طريقة جيدة لفهم ما إذا كان المنتج مناسبًا لك من عدمه.

إذا كان ما تراه منطقيًا، فستتمكن على الأرجح من استخدام قالب المستشار الخبير دون أي مشاكل.

أما إذا بدا الأمر غريبًا لك، ولكن لا تزال مهتم بمعرفة كيفية تفاصيل أكواد المستشار الخبير، فقد تساعدك تلك المقتطفات.

إذا لم تكن من النوع الذي يتقن التكويد وكل هذا لا يثير اهتمامك، فربما لا يناسبك هذا القالب.

خصائص الاكسبيرت

//-PROPERTIES-//
// تساعد الخصائص في تحسين مظهر البرنامج عند تحميله في MT5
// توفر مزيدًا من المعلومات والتفاصيل
// هذا ما ستراه في علامة تبويب About عند إرفاق الاكسبيرت بالرسم البياني.
#property link          "https://www.earnforex.com/ar/اكسبرتات الميتاتريدر/mt5-ea-template/"
#property version       "1.00"
#property copyright     "EarnForex.com - 2024"
#property description   "قالب أساسي للمستشار الخبير في MT5."
#property description   ""
#property description   "تحذير: لا يوجد ضمانة بأن هذا الاكسبيرت سيعمل كما هو مخطط له. استخدمه على مسؤوليتك الخاصة."
#property description   ""
#property description   "اعرف المزيد على www.EarnForex.com"
#property icon          "\\Files\\EF-Icon-64x64px.ico"
 

معلمات الإدخال

// معلمات الاكسبيرت
input string Comment_0 = "==========";          // معلمات خاصة بالاكسبيرت
// !! أعلن عن معلماتك الخاصة للاكسبيرت هنا.
// على سبيل المثال، فترة المتوسط المتحرك، مستوى RSI، أو أي شيء آخر تحتاج أن يكون الاكسبيرت على دراية به عند تنفيذ استراتيجية التداول.
// تبدأ جميع المعلمات بالكلمة المفتاحية 'input'
// input int example = 10; // هذا مثال على معامل الإدخال

input string Comment_1 = "==========";  // إعدادات ساعات التداول
input bool UseTradingHours = false;     // تحديد ساعات التداول
input ENUM_HOUR TradingHourStart = h07; // ساعة بدء التداول (ساعة خادم الوسيط)
input ENUM_HOUR TradingHourEnd = h19;   // ساعة نهاية التداول (ساعة خادم الوسيط)

input string Comment_2 = "==========";  // إعدادات ATR
input int ATRPeriod = 100;              // فترة ATR
input ENUM_TIMEFRAMES ATRTimeFrame = PERIOD_CURRENT; // إطار ATR الزمني
input double ATRMultiplierSL = 2;       // مضاعف ATR لإيقاف الخسارة
input double ATRMultiplierTP = 3;       // مضاعف ATR لأخذ الربح

// معلمات الإدخال العامة
input string Comment_a = "==========";                             // إعدادات إدارة المخاطرة
input ENUM_RISK_DEFAULT_SIZE RiskDefaultSize = RISK_DEFAULT_FIXED; // وضع حجم المركز
input double DefaultLotSize = 0.01;                                // حجم المركز (إذا كان ثابتًا أو لم يتم تحديد إيقاف الخسارة)
input ENUM_RISK_BASE RiskBase = RISK_BASE_BALANCE;                 // قاعدة المخاطرة
input int MaxRiskPerTrade = 2;                                     // النسبة المئوية للمخاطرة في كل صفقة
input double MinLotSize = 0.01;                                    // الحد الأدنى لحجم المركز المسموح به
input double MaxLotSize = 100;                                     // الحد الأقصى لحجم المركز المسموح به
input int MaxPositions = 1;                                        // الحد الأقصى لعدد مراكز هذا الاكسبيرت

input string Comment_b = "==========";                             // إعدادات إيقاف الخسارة وأخذ الربح
input ENUM_MODE_SL StopLossMode = SL_FIXED;                        // وضع إيقاف الخسارة
input int DefaultStopLoss = 0;                                     // إيقاف الخسارة الافتراضي بالنقاط (0 = بدون إيقاف خسارة)
input int MinStopLoss = 0;                                         // الحد الأدنى لإيقاف الخسارة المسموح به بالنقاط
input int MaxStopLoss = 5000;                                      // الحد الأقصى المسموح به لإيقاف الخسارة بالنقاط
input ENUM_MODE_TP TakeProfitMode = TP_FIXED;                      // وضع أخذ الربح
input int DefaultTakeProfit = 0;                                   // أخذ الربح الافتراضي بالنقاط (0 = بدون أخذ ربح)
input int MinTakeProfit = 0;                                       // الحد الأدنى المسموح به لأخذ الربح بالنقاط
input int MaxTakeProfit = 5000;                                    // الحد الأقصى المسموح به لأخذ الربح بالنقاط

input string Comment_c = "==========";                             // إعدادات الإغلاق الجزئي
input bool UsePartialClose = false;                                // استخدم الإغلاق الجزئي
input double PartialClosePerc = 50;                                // النسبة المئوية للإغلاق الجزئي
input double ATRMultiplierPC = 1;                                  // مضاعف ATR للإغلاق الجزئي

input string Comment_d = "==========";                             // إعدادات إضافية
input int MagicNumber = 0;                                         // الرقم السحري
input string OrderNote = "";                                       // تعليق على الأوامر
input int Slippage = 5;                                            // الانزلاق السعري بالنقاط
input int MaxSpread = 50;                                          // الحد الأقصى المسموح به للسبريد في الصفقة، بالنقاط
 

معالجة المزايدة السعرية

// معالجة الدخول والخروج
void ProcessTick()
{
    if (!GetIndicatorsData()) return;
   
    if (CountPositions())
    {
        // هناك مركز مفتوح. قم بإدارة SL، TP، أو الإغلاق إذا لزم الأمر.
        if (UsePartialClose) PartialCloseAll();
        CheckExitSignal();
    }

    // كتلة من التعليمات البرمجية تسمح بتنفيذ الأكواد اللاحقة فقط عند ظهور شمعة جديدة على الرسم البياني.
    // يعني ذلك أنه سيتم فحص إشارات الإدخال مرتين فقط مع كل شمعة.
    /* static datetime current_bar_time = WRONG_VALUE;
    datetime previous_bar_time = current_bar_time;
    current_bar_time = iTime(Symbol(), Period(), 0);
    static int ticks_of_new_bar = 0; // معالجة مزايدتين (ticks) فقط لكل شمعة جديدة للسماح لعوازل المؤشر بإعادة التحديث.
    if (current_bar_time == previous_bar_time)
    {
        ticks_of_new_bar++;
        if (ticks_of_new_bar > 1) return; // تخطي بعد مزايدتين.
    }
    else ticks_of_new_bar = 0; */

    // إعادة حساب الرقم بعد الاستدعاء الأول لأنه ربما تم إغلاق بعض الصفقات.
    if (CountPositions() < MaxPositions) CheckEntrySignal(); // تحقق من إشارات الدخول فقط إذا لم تكن هناك الكثير من المراكز بالفعل.
}
 

قالب التحقق من إشارات الدخول

// إشارة الدخول
void CheckEntrySignal()
{
    if ((UseTradingHours) && (!IsCurrentTimeInInterval(TradingHourStart, TradingHourEnd))) return; // قيود ساعات التداول المرتبطة بالدخول.

    bool BuySignal = false;
    bool SellSignal = false;

    // شروط إشارة الشراء

    // هذا هو المكان الذي يجب أن تُدخِل فيه إشارة الدخول لأوامر الشراء.
    // تضمين شرط لفتح أمر شراء، يجب أن يقوم الشرط بتعيين BuySignal  إلى true أو  false.
  
    //!! إلغاء التعليق وتعديل سطر فحص إشارة الدخول للشراء:
    //if ((Indicator_current > iClose(Symbol(), Period(), 1)) && (Indicator_previous <= iClose(Symbol(), Period(), 2))) BuySignal = true; // تحقق ما إذا كانت قيمة المؤشر قد قطعت مستوى سعر الإغلاق من أسفل.

    if (BuySignal)
    {
        OpenBuy();
    }

    // شروط إشارة البيع

    // هذا هو المكان الذي يجب أن تُدخِل فيه إشارة الدخول لأوامر البيع.
    // قم بتضمين شرط لفتح أمر بيع، يجب أن يقوم الشرط بتعيين SellSignal إلى true أو  false.
   
    //!! إلغاء التعليق وتعديل سطر فحص إشارة الدخول للبيع:
    //if ((Indicator_current < iClose(Symbol(), Period(), 1)) && (Indicator_previous >= iClose(Symbol(), Period(), 2))) SellSignal = true; // تحقق ما إذا كانت قيمة المؤشر قد قطعت سعر الإغلاق من أعلى.

    if (SellSignal)
    {
        OpenSell();
    }
}
 

Downloads

 

يمكنك فتح حساب تداول مع أي من وسطاء الفوركس MT5 لتثبيت هذا الاكسبيرت المعروض هنا، والمخصص للميتاتريدر5.

كيفية تثبيت قالب اكسبيرت MT5

  1. حَمِل ملف أرشيف المستشار الخبير.
  2. افتح مجلد بيانات ميتاتريدر5 (عبر ملف→افتح مجلد البيانات أو Ctrl+Shift+D ).
  3. افتح مجلد MQL5.
  4. انسخ جميع المجلدات من الأرشيف مباشرةً إلى مجلد MQL5.
  5. أعِد تشغيل الميتاتريدر5 أو حَدِث قائمة المؤشرات عن طريق النقر بزر الماوس الأيمن فوق النافذة الفرعية المستكشف في المنصة واختيار تحديث.

كيفية استخدامه

يتم تمييز أجزاء التعليمات البرمجية التي تتطلب إجراء تعديل أو إدراج أجزاء من الأكواد بعلامات تعجب مزدوجة (!!). ستحتاج إلى تخصيص الدوال التالية لإنشاء اكسبيرت فعال.

  • GetIndicatorsData()يتضمن الكود الذي يقرأ قيم المؤشر المستخدمة مع دوال أخرى. إذا كنت تخطط لاستخدام هذا المستشار الخبير مع أي مؤشرات في إطار استراتيجية التداول، فستحتاج إلى تعديل هذه الدالة.
  • EvaluateEntry() يتضمن الكود المُستخدم في تفعيل إشارات الدخول. من الضروري إضافة قيمة هنا لكي يتمكن المستشار الخبير من فتح مراكز جديدة. ستجد مثال لكود الدخول تم اقتراحه في التعليقات داخل هذه الدالة.
  • EvaluateExit()يتضمن الكود المستخدم في تفعيل إشارة الخروج. يمكنك تركه كما هو إذا كنت تخطط لاستخدام مستويات ثابتة لإيقاف الخسارة وأخذ الربح. بخلاف ذلك، يمكنك تحديد إشارات الخروج القائمة على إحدى المؤشرات في هذه الدالة.
 

إذا كنت مهتمًا بهذا القالب للمستشارين الخبراء، يمكنك أيضًا النظر على قالب اكسبيرت MT4.

مناقشة

هل لديك أي اقتراحات أو استفسارات بخصوص هذا المستشار الخبير؟ يمكنك دائمًا مناقشة MT5 Expert Advisor Template مع متداولي الفوركس الآخرين ومبرمجي MQL5 في منتدانا.